<?php
namespace app\common\model;

// use think\Model;

class Config extends \app\common\model\Base
{


    // protected $pk = 'id';

    //系统支持自动写入创建和更新的时间戳字段
    protected $autoWriteTimestamp = true;

    //类型自动转换
	protected $type = [
        'id'    =>  'integer',                      
        'name'     =>  'string',               //配置名称    
        'type'  =>  'string',               //配置名称    
        'title'      =>  'string',               //配置名称    
        'group'      =>  'integer',               //配置名称    
        'remark'      =>  'string',               //配置名称    
        'icon'      =>  'string',               //配置名称    
        'create_time'      =>  'integer',               //配置名称    
        'update_time'      =>  'integer',               //配置名称    
        'status'      =>  'integer',               //配置名称    
        'value'      =>  'string',               //配置名称    
        'sort'      =>  'integer',               //配置名称    


    ];

    //数据完成
    protected $auto = array('name', 'update_time', 'status'=>1);
    protected $insert = array('create_time'); 
    // protected $update = [];  
    

    protected function setNameAttr($value){
        return strtolower($value);
    }


    // protected function getTypeTextAttr($value, $data){
    //     $type = config('config_type_list');  
    //     $type_text = explode(',', $type[$data['type']]);
    //     return $type_text[0];
    // }

    /**
     * 读取数据库中的配置   方便在 app\common\controller\Base  -> _initialize() 中 读取配置参数
     * @return [type] [description]
     */
    public function lists(){
        $map    = array('status' => 1);
        $data   = $this->db()->where($map)->field('type,name,value')->select();
        $config = array();
        if($data && is_array($data)){
            foreach ($data as $value) {
                $config[$value['name']] = $this->parse($value['type'], $value['value']);//根据配置类型解析配置
            }
        }
        return $config;
    }


    /**
     * 根据配置类型解析配置
     * @param  integer $type  配置类型
     * @param  string  $value 配置值
     * @author 
     */
    private function parse($type, $value){
        switch ($type) {
            case 'textarea': //解析数组
            $array = preg_split('/[,;\r\n]+/', trim( $value , ",;\r\n"));
            if(strpos($value,':')){
                $value  = array();
                foreach ($array as $val) {
                    $list = explode(':', $val);
                    if(isset($list[2])){
                        $value[$list[0]]   = $list[1].','.$list[2];
                    }else{
                        $value[$list[0]]   = $list[1];
                    }
                }
            }else{
                $value =    $array;
            }
            break;
        }
        return $value;
    }



    
}